/**
 * @file 
 * @description 常见的方法类库
 * @author tians
 */

/**
 * @method
 * @description 防抖
 * @param {Function} fn 回调函数
 * @param {Number} delay 延迟时间（毫秒）
 * @returns {Function} 闭包函数
 */
export function debounce(fn, delay) {
    let timer = null;
    delay = delay || 500;
    return function () {
        clearTimeout(timer);
        const args = [...arguments];
        timer = setTimeout(() => {
            fn.call(this, args);
        }, delay);
    }
}

/**
 * @method
 * @description 节流
 * @param {Function} fn 回调函数
 * @param {Number} delay 延迟时间（毫秒）
 * @returns {Function} 闭包函数
 */
export function throttle(fn, delay) {
    let timer = null;
    delay = delay || 500;
    return function () {
        if (!timer) {
            const args = [...arguments];
            timer = setTimeout(() => {
                timer = null;
                fn.call(this, args);
            }, delay);
        }
    }
}